//
//  Item.h
//  derleyici
//
//  Created by Avea on 12/17/11.
//  Copyright (c) 2011 __MyCompanyName__. All rights reserved.
//
#include <iostream>
#include <string>
#include <vector>
#include "Symbol.h"
#include "Rule.h"


#ifndef derleyici_Item_h
#define derleyici_Item_h

using namespace std;

class Item:public Rule{
public:
    Item(Rule *, int);
    Item(Rule *, int, Symbol *);
    int getDotLocation();
    void addSymbolToNextSymbols(Symbol*);
    vector<Symbol*> getNextSymbols();
    Symbol* getNextSymbolFromDot();
    void printSymbols();
    bool operator==(Item*); //Itemleri karşılaştırmak için operatör overloading(const olsa daha iyi olurdu)
    bool isDotAtEnd();
    bool hasNextSymbol(Symbol*); //Sonraki sözcük listesinde sembolü arar
private:
    int dotIndex; //noktanın yerini tutacak
    vector<Symbol *> nextSymbols; //Sonraki sözcükleri tutmak için kullanılacak
    bool dotAtEnd;
    
};


#endif
